-- Legacy
-- Created by chengb Feb/3/2016
-- 遗产格子

-- 内部函数声明
local playLegacyEffect;

-- 初始化
function initLegacy(self)
    self.item:removeAllChildren();

    local function callFunc()
        -- 获取格子位置
        local pos = self.gridData:getPos();

        -- 领取遗产
        DungeonActionM.go("take_legacy", pos);
    end

    local function onClicked(sender, eventType)
        if eventType == ccui.TouchEventType.began then
            if self.gridData.state == GRID_STATE_DISABLE then
                -- 已经失效，不处理
                return;
            end

            -- 打开建筑查看界面
            self:openBuildingView(callFunc, -20);

            -- 音效
            AudioM.playFx("ui_open1");
        end
    end

    self.pickLegacyClick = onClicked;

    -- 遗产图标
    local icon = getLevelItemIconPath("legacy");
    self.icon = ccui.ImageView:create(icon);
    self.icon:setTouchEnabled(true);
    self.icon:addTouchEventListener(onClicked);
    self.item:addChild(self.icon);
end

-- 领取遗产的回调
function onTakeLegacy(self, legacy)
    -- 播放获得遗产动画
    playLegacyEffect(self, legacy);
end

-- 播放获得遗产动画
function playLegacyEffect(self, legacy)
    -- a、浮现文字：你发现了大量遗产！
    -- b、依次播放获得攻击、魔力、生命值、魔法值、探索点的效果
    -- c、宝物飞入包裹栏，然后弹出获得宝物的提示界面，标题为【冈布奥の遗产】（如果有的话，关闭后，进行下一步）
    -- d、卷轴飞入卷轴栏，弹出获得卷轴的提示界面，标题为【冈布奥の遗产】（如果有的话，关闭后，进行下一步）

    -- 提示玩家获得了遗产
    alert(getLocStr("find_legacy"));

    -- 打上正在播放动画的标记
    DungeonLegacyM.setPlayingLegacy(true);

    -- 锁定玩家操作
    wait(nil, nil, UIMgr.TOP_MENU_ZORDER + 1);

    local attribLegacy = DungeonLegacyM.getLegacyAttrib(legacy);
    local equipLegacy  = DungeonLegacyM.getLegacyEquip(legacy);
    local spellLegacy  = DungeonLegacyM.getLegacySpell(legacy);

    -- 抛出遗产动画播放完毕事件
    local function fireEffectDone()
        -- 关闭隐形界面
        UIMgr.getCurrentScene():removeFormByName("UIInvisibleForm");

        -- 抛出事件
        DungeonLegacyM.setPlayingLegacy(false);
        EventMgr.fire(event.LEGACY_EFFECT_DONE);
    end

    -- 显示卷轴奖励窗口
    local function showSpellBonusForm()
        local function callback()
            -- 播放卷轴飞入卷轴栏，建筑消失
            fireEffectDone();
            self:playBonusListEffect(spellLegacy);
        end
        showBonusNotifyForm(getLocStr("slime_legacy_title"), spellLegacy, callback);
    end

    -- 显示宝物奖励窗口
    local function showEquipBonusForm()
        local function callback()
            -- 播放宝物飞入包裹
            local bonusTime = self:playBonusListEffect(equipLegacy, false);

            local function callback2()
                if #spellLegacy > 0 then
                    -- 有卷轴奖励

                    -- 弹出获得卷轴的提示界面
                    showSpellBonusForm();
                else
                    -- 没有其他奖励了，播放建筑消失
                    fireEffectDone();
                    playBuildingDisappear(self);
                end
            end
            performWithDelay(self, callback2, bonusTime + 1);
        end
        showBonusNotifyForm(getLocStr("slime_legacy_title"), equipLegacy, callback)
    end

    if #attribLegacy > 0 then
        -- 有属性奖励

        -- 播放获得属性的特效
        local bonusTime = self:playBonusListEffect(attribLegacy, false);

        if #equipLegacy > 0 then
            -- 有宝物奖励

            -- 等属性奖励播完后，弹出获得宝物的提示界面
            performWithDelay(self, showEquipBonusForm, bonusTime + 1);
        elseif #spellLegacy > 0 then
            -- 有卷轴奖励

            --  等属性奖励播完后，弹出获得卷轴的提示界面
            performWithDelay(self, showSpellBonusForm, bonusTime + 1);
        else
            -- 没有其他奖励了，播放建筑消失
            fireEffectDone();
            playBuildingDisappear(self);
        end
    elseif #equipLegacy > 0 then
        -- 没有属性将奖励，但是有宝物奖励

        -- 弹出获得宝物的提示界面
        showEquipBonusForm();
    elseif #spellLegacy > 0 then
        -- 只有卷轴奖励

        -- 弹出获得卷轴的提示界面
        showSpellBonusForm();
    else
        -- 没有遗产？
        fireEffectDone();
        playBuildingDisappear(self);
    end
end
